<template>
  <div class="import">
    <el-card>
      <!-- 标题 -->
      <h3>员工导入</h3>
      <!-- 寄到文案 -->
      <el-alert
        title="每次导入仅可添加1000名员工，姓名，手机、入职埋单、聘用形式为必填项"
        type="warning"
        show-icon
      ></el-alert>
      <excel
        class="excel"
        :beforeUpload="beforeUpload"
        :onSuccess="onSuccess"
      ></excel>
    </el-card>
  </div>
</template>

<script>
// 导入批量导入员工数据接口
import { importEmplApi } from "@/api/employess";
export default {
  methods: {
    // 上传之前时的方法
    beforeUpload(file) {
      console.log(file);
      // 定义个数值
      const res = file.size < 2 * 1024 * 1024;
      // 判断数值为false
      if (!res) {
        // 就提示用户上传失败
        this.$message.error("上传文件不能大于2M哦");
        // 不执行一下代码
        return false;
      }
      // 返回true就执行判断通过
      return true;
    },

    // 定义一个转换日期格式的方法
    trunDate(days) {
      const timeStemp = (days - 1) * 24 * 60 * 60 * 1000; //把得到的日期减一乘以24小时60分钟60秒1000毫秒
      const mytime = new Date(timeStemp); //把得到的时间戳转换为日期
      mytime.setFullYear(mytime.getFullYear() - 70); //在把得到的日期进行设置，把年份减去70
      return mytime; //将得到的数据返回出去
    },

    // 上传后的方法
    async onSuccess({ results }) {
      // 定义一个对象
      const obj = {
        姓名: "username",
        手机号: "mobile",
        工号: "workNumber",
        入职日期: "timeOfEntry",
        转正日期: "correctionTime",
      };
      // 将返回数据的键改为英文
      const newresulte = results.map((item) => {
        // // 把返回的数据总的每一项的键取出来
        // const keysArr = Object.keys(item);
        // // 定义一个空对象
        // const newObj = {};
        // // 将取出来的键进行遍历
        // keysArr.forEach((key) => {
        //   // 把obj对象中的键对应的值取出来
        //   const mykey = obj[key];
        //   // 定义好一个空的数据
        //   let myval;
        //   // 判断遍历出来的key属性中是入职日期的或者是转正日期的
        //   if (key === "入职日期" || key === "转正日期") {
        //     // 就将其的数字转换为时间
        //     myval = this.trunDate(item[key]);
        //   } else {
        //     // 在把results中每一项对应的值取出来
        //     myval = item[key];
        //   }
        //   newObj[mykey] = myval;
        // });
        // // 返回出这个改好的obj对象
        // return newObj;

        // 得到item中所有的键
        const keysArr = Object.keys(item);
        // 定义一个空对象用来保存新的键值对
        const newObj = {};
        // 遍历keyArr中的键
        keysArr.forEach((key) => {
          // 把obj对象中的值那出来当做键使用，因为要转因为所有把对应的的值那出来
          const mykey = obj[key];
          //因为得到的数据的入职日期和转正日期为数字所以使用发法转换成日期
          let myval;
          // 判断是不是入职时间和转正时间
          if (key === "入职日期" || key === "转正日期") {
            // 如果是就调用转换的方法把得到数据的值转换成日期格式
            myval = this.trunDate(item[key]);
          } else {
            // 如果不是的话就把剩下的值给取出来
            myval = item[key];
          }
          // 把obj中取到的值作为键，把item中取到的值作为值
          newObj[mykey]=myval
        });
        //把得到的新对象返回出去
        return newObj;
      });
      // console.log(newresulte);
      // 把转换后的键值对对象进行传参
      await importEmplApi(newresulte);
      // 提示用户上传成功
      this.$message.success("上传成功");
      // 跳转回员工列表
      this.$router.push("/employees");
    },
  },
};
</script>

<style lang="scss">
.import {
  margin: 25px;
  h3 {
    text-align: center;
  }
  .excel {
    margin-top: 110px;
    margin-bottom: 150px;
  }
}
</style>
